/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package bs.seguridad.web;

import bs.global.excepciones.ExcepcionGeneralSistema;
import bs.global.util.JsfUtil;
import bs.global.web.GenericBean;
import bs.seguridad.modelo.Usuario;
import bs.seguridad.rn.UsuarioRN;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author Pablo
 */

@ViewScoped
public class UsuarioBean extends GenericBean {

  @EJB private UsuarioRN usuarioRN;

  private Usuario usuario;
  private List<Usuario> lista;  
  private String cPassword;  

    /** Creates a new instance of UsuarioMB */
    public UsuarioBean() {

    }

    @PostConstruct
    public void init(){        
        titulo = "Usuarios de sistema";
        lista = usuarioRN.getLista();
    }

    public void guardar(boolean nuevo){
        try {
            puedoGuardar();

            usuarioRN.guardar(usuario);
            lista = usuarioRN.getLista();

            if (nuevo) {
                nuevo();
            }

            JsfUtil.addInfoMessage("Los datos fueron guardados correctamente");
        } catch (Exception ex) {
            JsfUtil.addErrorMessage("No se puede guardar el usuario: " + ex.getMessage());
        }
    }

    private void puedoGuardar() throws ExcepcionGeneralSistema {
       
        if(!usuario.getPassword().equals(cPassword)){
            throw new ExcepcionGeneralSistema("No password incorrecto");
        }        
    }

    public String verNuevo(){

        nuevo();
        return verDatos();
    }
    
    public void nuevo(){
        try {
            usuario = new Usuario();
            cPassword = "";
        } catch (Exception e) {
            JsfUtil.addErrorMessage("No se puede generar nuevo usuario");
        }
    }

    public Usuario getUsuario() {
       return usuario;
    }

    public void setUsuario(Usuario usuario) {
       this.usuario = usuario;
    }

    public void deBaja() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void eliminar(Usuario entidad) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void seleccionar(Usuario entidad) {
        this.usuario = entidad;
        cPassword = entidad.getPassword();        
    }

    public String verEntidad(Usuario entidad) {
        seleccionar(entidad);
        JsfUtil.addErrorMessage(usuario.toString());
        return verDatos();
    }

    public void eliminar(){
        
        try {
            usuarioRN.eliminar(usuario);
            lista = usuarioRN.getLista();
            usuario = null;
            JsfUtil.addWarningMessage("El usuario ha sido eliminado");
        } catch (Exception ex) {
            JsfUtil.addErrorMessage("No es posible eliminar el usuario");
        }
    }

    public List<Usuario> getLista() {
        return lista;
    }

    public void setLista(List<Usuario> lista) {
        this.lista = lista;
    }

    public String getcPassword() {
        return cPassword;
    }

    public void setcPassword(String cPassword) {
        this.cPassword = cPassword;
    }

    public void imprimirLista() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void imprimirEntidad() {
        throw new UnsupportedOperationException("Not supported yet.");
    }






}
